//核心代码模式
class Solution {
public:
    int jumpFloor(int n) {
        if (n<=1)  return 1;
        //递归
//         else return jumpFloor(n-1)+jumpFloor(n-2);


        //动态规划 数组
        //vector<int> a(5,1); //定义了5个整型元素的向量,且给出每个元素的初值为1
        //二维数组名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector <int *> a
        vector<int> dp(n+1);  //无初值  第n个台阶实际上是第n+1个数
        dp[0] = dp[1] = 1;
        for (int i=2;i<=n;i++){
            dp[i] = dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
};